数据类型划分: 可变数据类型 不可变数据类型
  • 不可变数据类型: tuple(元组) bool int float str
  • 可变数据类型: list dict(字典) set(集合)

数据类型: int float str bool

数据结构: list dict tuple set

1. int: 整型

int = 10

2. float: 浮点

float = 10.5

3. str:字符串

str = '字符串' 

# ''' ''' 一般情况下代表多行注释 如果进行了赋值就代表了多行字符串 相当于 js 中的 `` 功能 
str_long = ''' 
    三月咸阳城,千花昼如锦。 
    谁能春独愁,对此径须饮。 
    穷通与修短,造化夙所禀。
'''

4. bool: 布尔

bool = True 
bool = False

5. list: 列表

list = [1, 2, 3, 4]

6. tuple: 元组(只读列表) -> 元组与列表类似,不同之处在于元组的元素不能修改。

tuple = (1, 2, 3, 4)

7. dict: 字典 -> 和 js 中的对象一样都是键值对,不同之处在于 key值 一定要用单引号引着

dictionary = {'key1': 'val1', 'key2': 'val2'}

8. set: 集合 -> 是一个无序的不重复元素序列。自带去重功能

set = {1, 2, 2, 3, 3, 4} # 结果 {1, 2, 3, 4}

9. bytes -> 用作于存储和传递 -> 该数据类型只会是ASCII UTF-8 gbk

# 英文
se = 'Kevin'
se1 = se.encode('utf-8')
se2 = se.encode('gbk')
se3 = se.encode('ascii')

print(se1, type(se1)) # b'Kevin' <class 'bytes'>
print(se2, type(se2)) # b'Kevin' <class 'bytes'>
print(se3, type(se3)) # b'Kevin' <class 'bytes'>

# 中文
sc = '中文'
sc1 = sc.encode('utf-8')
sc2 = sc.encode('gbk')

print(sc1, type(sc1)) # b'\xe4\xb8\xad\xe6\x96\x87' <class 'bytes'>
print(sc2, type(sc2)) # b'\xd6\xd0\xce\xc4' <class 'bytes'>

#  可以通过查看 b 后面有多少位数就可以判断使用了什么编码方式
#  比如 \xe4\xb8\xad\xe6\x96\x87 有 24 位,则使用了 uft-8
#  比如 \xd6\xd0\xce\xc4 有 16 位,则使用了 gbk 

10. None -> NoneType类型

  • 在python中是没有 Null 的,取而代之的是 None
  • None表示该值是一个空对象,空值是Python里一个特殊的值,用None表示
  • None不能理解为0,因为0是有意义的,而None是一个特殊的空值
  • None是一个特殊的常量
  • None 和 False 不同
  • None 不是 0
  • None 不是空字符串
  • 使用 None 进行判断的时候均为 False
  • None 和任何其他的数据类型比较永远返回 False
  • None 有自己的数据类型NoneType
  • 可以将None赋值给任何变量,也可以将任何变量赋值给一个None值得对象,但是不能创建其他NoneType对象